#include <iostream>
#include <typeinfo>

// RTTI:runtime type information 运行时类型信息
// 在运行时将类的信息存入内存

class Base
{
public:
    virtual void show()
    {
        std::cout << "Base" << std::endl;
    }
};

class Derived : public Base
{
public:
    virtual void show()
    {
        std::cout << "Derived" << std::endl;
    }
};

int main()
{
    // dynamic_cast : 运行时类型检查,是动态的，在运行时进行类型检查 在运行时检查指针能不能转换 是有性能损耗的
    // RTTI
    Base *b = new Derived;
    // 非多态类型，只能检测出父类(不加vitaull时)
    // 多态类型：可以检测出子类
    std::cout << typeid(*b).name() << std :: endl;  // 关键字，可以输出给的变量的名称
    return 0;
}
